package interval
import (
"sort"
"strings"
"github.com/K-Phoen/sdk"
"github.com/prometheus/common/model"
)
type Option func (interval *Interval )
type ValuesList []string
type Interval struct {
Builder sdk .TemplateVar
}
func New (name string , options ...Option ) *Interval {
interval := &Interval {Builder : sdk .TemplateVar {
Name : name ,
Label : name ,
Type : "interval" ,
Options : []sdk .Option {},
}}
for _ , opt := range options {
opt (interval )
}
return interval
}
func Values (values ValuesList ) Option {
return func (interval *Interval ) {
sort .SliceStable (values , func (i , j int ) bool {
iDuration , _ := model .ParseDuration (values [i ])
jDuration , _ := model .ParseDuration (values [j ])
return iDuration < jDuration
})
for _ , value := range values {
interval .Builder .Options = append (interval .Builder .Options , sdk .Option {
Text : value ,
Value : value ,
})
}
interval .Builder .Query = strings .Join (values , "," )
}
}
func Default (value string ) Option {
return func (interval *Interval ) {
interval .Builder .Current = sdk .Current {
Text : &sdk .StringSliceString {Value : []string {value }, Valid : true },
Value : value ,
}
}
}
func Label (label string ) Option {
return func (interval *Interval ) {
interval .Builder .Label = label
}
}
func HideLabel () Option {
return func (interval *Interval ) {
interval .Builder .Hide = 1
}
}
func Hide () Option {
return func (interval *Interval ) {
interval .Builder .Hide = 2
}
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .